#include "image.h"

imageNo360::imageNo360(QWidget *parent)
    : QGraphicsView(parent)
{
    // ui->setupUi(this);

    scene = new QGraphicsScene(this);
    setScene(scene);
    setBackgroundBrush(QBrush(QColor(75, 116, 150)));
    setRenderHint(QPainter::Antialiasing);
    // 设置拖拽模式
    setDragMode(QGraphicsView::ScrollHandDrag);

    // 允许缩放
    setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
    opengl = new QOpenGLWidget();
    setViewport(opengl);
}

imageNo360::~imageNo360()
{
    // delete ui;
}

void imageNo360::wheelEvent(QWheelEvent *event)
{
    // 获取当前缩放因子
    double scaleFactor = transform().m11();

    // 滚轮事件处理（Qt 6使用angleDelta()，Qt 5使用delta()）
    if (event->angleDelta().y() > 0)
    {
        // 放大
        if (scaleFactor < 30.0)
        { // 限制最大缩放
            scale(1.1, 1.1);
        }
    }
    else
    {
        // 缩小
        if (scaleFactor > 0.03)
        { // 限制最小缩放
            scale(0.9, 0.9);
        }
    }
    event->accept();
}
void imageNo360::setImage(QImage image)
{
    scene->clear();
    scene->setSceneRect(0, 0, image.width(), image.height());
    scene->addPixmap(QPixmap::fromImage(image));
    QRectF sceneRect = scene->itemsBoundingRect();

    // 调整视图以显示所有内容，保持纵横比
    fitInView(sceneRect, Qt::KeepAspectRatio);
}
void imageNo360::dragEnterEvent(QDragEnterEvent *event)
{
    QWidget::dragEnterEvent(event);
}
void imageNo360::dropEvent(QDropEvent *event)
{
    QWidget::dropEvent(event);
}
